Simple example
# http://rstudio-pubs-static.s3.amazonaws.com/93614_be30df613b2a4707b3e5a1a62f631d19.html
# https://rdrr.io/cran/fastICA/man/fastICA.html
# Source matrix
S <- cbind(sin((1:1000)/20), rep((((1:200)-100)/100), 5))
# Mixing matrix
A <- matrix(c(0.29, 0.655, -0.543, 0.557), 2, 2)
# plot graphs
par(mfcol = c(1, 2))
plot(1:1000, S[,1], type = "l",xlab = "S1", ylab = "")
plot(1:1000, S[,2], type = "l", xlab = "S2", ylab = "")

# Mixed two signals
X <- S %*% A
par(mfcol = c(1, 2))
plot(1:1000, X[,1], type = "l",xlab = "X1", ylab = "")
plot(1:1000, X[,2], type = "l", xlab = "X2", ylab = "")

# ICA for extracting independent sources from mixed signals
a <- fastICA(X, 2, alg.typ = "parallel", fun = "logcosh", alpha = 1,
method = "R", row.norm = FALSE, maxit = 200,
tol = 0.0001, verbose = FALSE)
par(mfcol = c(1, 2))
plot(1:1000, a$S[,1], type = "l", xlab = "S'1", ylab = "")
plot(1:1000, a$S[,2], type = "l", xlab = "S'2", ylab = "")

par(mfcol = c(2, 3))
plot(1:1000, S[,1 ], type = "l", main = "Original Signals",
xlab = "", ylab = "")
plot(1:1000, S[,2 ], type = "l", xlab = "", ylab = "")
plot(1:1000, X[,1 ], type = "l", main = "Mixed Signals",
xlab = "", ylab = "")
plot(1:1000, X[,2 ], type = "l", xlab = "", ylab = "")
plot(1:1000, a$S[,1 ], type = "l", main = "ICA source estimates",
xlab = "", ylab = "")
plot(1:1000, a$S[, 2], type = "l", xlab = "", ylab = "")

Iris example
x <- iris[1:4]
y <- iris[5]
results_iris_ica <- fastICA(x, n.comp = 2)
results_iris_ica
$X
Sepal.Length Sepal.Width Petal.Length Petal.Width
[1,] -0.74333333 0.44266667 -2.358 -0.9993333333
[2,] -0.94333333 -0.05733333 -2.358 -0.9993333333
[3,] -1.14333333 0.14266667 -2.458 -0.9993333333
[4,] -1.24333333 0.04266667 -2.258 -0.9993333333
[5,] -0.84333333 0.54266667 -2.358 -0.9993333333
[6,] -0.44333333 0.84266667 -2.058 -0.7993333333
[7,] -1.24333333 0.34266667 -2.358 -0.8993333333
[8,] -0.84333333 0.34266667 -2.258 -0.9993333333
[9,] -1.44333333 -0.15733333 -2.358 -0.9993333333
[10,] -0.94333333 0.04266667 -2.258 -1.0993333333
[11,] -0.44333333 0.64266667 -2.258 -0.9993333333
[12,] -1.04333333 0.34266667 -2.158 -0.9993333333
[13,] -1.04333333 -0.05733333 -2.358 -1.0993333333
[14,] -1.54333333 -0.05733333 -2.658 -1.0993333333
[15,] -0.04333333 0.94266667 -2.558 -0.9993333333
[16,] -0.14333333 1.34266667 -2.258 -0.7993333333
[17,] -0.44333333 0.84266667 -2.458 -0.7993333333
[18,] -0.74333333 0.44266667 -2.358 -0.8993333333
[19,] -0.14333333 0.74266667 -2.058 -0.8993333333
[20,] -0.74333333 0.74266667 -2.258 -0.8993333333
[21,] -0.44333333 0.34266667 -2.058 -0.9993333333
[22,] -0.74333333 0.64266667 -2.258 -0.7993333333
[23,] -1.24333333 0.54266667 -2.758 -0.9993333333
[24,] -0.74333333 0.24266667 -2.058 -0.6993333333
[25,] -1.04333333 0.34266667 -1.858 -0.9993333333
[26,] -0.84333333 -0.05733333 -2.158 -0.9993333333
[27,] -0.84333333 0.34266667 -2.158 -0.7993333333
[28,] -0.64333333 0.44266667 -2.258 -0.9993333333
[29,] -0.64333333 0.34266667 -2.358 -0.9993333333
[30,] -1.14333333 0.14266667 -2.158 -0.9993333333
[31,] -1.04333333 0.04266667 -2.158 -0.9993333333
[32,] -0.44333333 0.34266667 -2.258 -0.7993333333
[33,] -0.64333333 1.04266667 -2.258 -1.0993333333
[34,] -0.34333333 1.14266667 -2.358 -0.9993333333
[35,] -0.94333333 0.04266667 -2.258 -0.9993333333
[36,] -0.84333333 0.14266667 -2.558 -0.9993333333
[37,] -0.34333333 0.44266667 -2.458 -0.9993333333
[38,] -0.94333333 0.54266667 -2.358 -1.0993333333
[39,] -1.44333333 -0.05733333 -2.458 -0.9993333333
[40,] -0.74333333 0.34266667 -2.258 -0.9993333333
[41,] -0.84333333 0.44266667 -2.458 -0.8993333333
[42,] -1.34333333 -0.75733333 -2.458 -0.8993333333
[43,] -1.44333333 0.14266667 -2.458 -0.9993333333
[44,] -0.84333333 0.44266667 -2.158 -0.5993333333
[45,] -0.74333333 0.74266667 -1.858 -0.7993333333
[46,] -1.04333333 -0.05733333 -2.358 -0.8993333333
[47,] -0.74333333 0.74266667 -2.158 -0.9993333333
[48,] -1.24333333 0.14266667 -2.358 -0.9993333333
[49,] -0.54333333 0.64266667 -2.258 -0.9993333333
[50,] -0.84333333 0.24266667 -2.358 -0.9993333333
[51,] 1.15666667 0.14266667 0.942 0.2006666667
[52,] 0.55666667 0.14266667 0.742 0.3006666667
[53,] 1.05666667 0.04266667 1.142 0.3006666667
[54,] -0.34333333 -0.75733333 0.242 0.1006666667
[55,] 0.65666667 -0.25733333 0.842 0.3006666667
[56,] -0.14333333 -0.25733333 0.742 0.1006666667
[57,] 0.45666667 0.24266667 0.942 0.4006666667
[58,] -0.94333333 -0.65733333 -0.458 -0.1993333333
[59,] 0.75666667 -0.15733333 0.842 0.1006666667
[60,] -0.64333333 -0.35733333 0.142 0.2006666667
[61,] -0.84333333 -1.05733333 -0.258 -0.1993333333
[62,] 0.05666667 -0.05733333 0.442 0.3006666667
[63,] 0.15666667 -0.85733333 0.242 -0.1993333333
[64,] 0.25666667 -0.15733333 0.942 0.2006666667
[65,] -0.24333333 -0.15733333 -0.158 0.1006666667
[66,] 0.85666667 0.04266667 0.642 0.2006666667
[67,] -0.24333333 -0.05733333 0.742 0.3006666667
[68,] -0.04333333 -0.35733333 0.342 -0.1993333333
[69,] 0.35666667 -0.85733333 0.742 0.3006666667
[70,] -0.24333333 -0.55733333 0.142 -0.0993333333
[71,] 0.05666667 0.14266667 1.042 0.6006666667
[72,] 0.25666667 -0.25733333 0.242 0.1006666667
[73,] 0.45666667 -0.55733333 1.142 0.3006666667
[74,] 0.25666667 -0.25733333 0.942 0.0006666667
[75,] 0.55666667 -0.15733333 0.542 0.1006666667
[76,] 0.75666667 -0.05733333 0.642 0.2006666667
[77,] 0.95666667 -0.25733333 1.042 0.2006666667
[78,] 0.85666667 -0.05733333 1.242 0.5006666667
[79,] 0.15666667 -0.15733333 0.742 0.3006666667
[80,] -0.14333333 -0.45733333 -0.258 -0.1993333333
[81,] -0.34333333 -0.65733333 0.042 -0.0993333333
[82,] -0.34333333 -0.65733333 -0.058 -0.1993333333
[83,] -0.04333333 -0.35733333 0.142 0.0006666667
[84,] 0.15666667 -0.35733333 1.342 0.4006666667
[85,] -0.44333333 -0.05733333 0.742 0.3006666667
[86,] 0.15666667 0.34266667 0.742 0.4006666667
[87,] 0.85666667 0.04266667 0.942 0.3006666667
[88,] 0.45666667 -0.75733333 0.642 0.1006666667
[89,] -0.24333333 -0.05733333 0.342 0.1006666667
[90,] -0.34333333 -0.55733333 0.242 0.1006666667
[91,] -0.34333333 -0.45733333 0.642 0.0006666667
[92,] 0.25666667 -0.05733333 0.842 0.2006666667
[93,] -0.04333333 -0.45733333 0.242 0.0006666667
[94,] -0.84333333 -0.75733333 -0.458 -0.1993333333
[95,] -0.24333333 -0.35733333 0.442 0.1006666667
[96,] -0.14333333 -0.05733333 0.442 0.0006666667
[97,] -0.14333333 -0.15733333 0.442 0.1006666667
[98,] 0.35666667 -0.15733333 0.542 0.1006666667
[99,] -0.74333333 -0.55733333 -0.758 -0.0993333333
[100,] -0.14333333 -0.25733333 0.342 0.1006666667
[101,] 0.45666667 0.24266667 2.242 1.3006666667
[102,] -0.04333333 -0.35733333 1.342 0.7006666667
[103,] 1.25666667 -0.05733333 2.142 0.9006666667
[104,] 0.45666667 -0.15733333 1.842 0.6006666667
[105,] 0.65666667 -0.05733333 2.042 1.0006666667
[106,] 1.75666667 -0.05733333 2.842 0.9006666667
[107,] -0.94333333 -0.55733333 0.742 0.5006666667
[108,] 1.45666667 -0.15733333 2.542 0.6006666667
[109,] 0.85666667 -0.55733333 2.042 0.6006666667
[110,] 1.35666667 0.54266667 2.342 1.3006666667
[111,] 0.65666667 0.14266667 1.342 0.8006666667
[112,] 0.55666667 -0.35733333 1.542 0.7006666667
[113,] 0.95666667 -0.05733333 1.742 0.9006666667
[114,] -0.14333333 -0.55733333 1.242 0.8006666667
[115,] -0.04333333 -0.25733333 1.342 1.2006666667
[116,] 0.55666667 0.14266667 1.542 1.1006666667
[117,] 0.65666667 -0.05733333 1.742 0.6006666667
[118,] 1.85666667 0.74266667 2.942 1.0006666667
[119,] 1.85666667 -0.45733333 3.142 1.1006666667
[120,] 0.15666667 -0.85733333 1.242 0.3006666667
[121,] 1.05666667 0.14266667 1.942 1.1006666667
[122,] -0.24333333 -0.25733333 1.142 0.8006666667
[123,] 1.85666667 -0.25733333 2.942 0.8006666667
[124,] 0.45666667 -0.35733333 1.142 0.6006666667
[125,] 0.85666667 0.24266667 1.942 0.9006666667
[126,] 1.35666667 0.14266667 2.242 0.6006666667
[127,] 0.35666667 -0.25733333 1.042 0.6006666667
[128,] 0.25666667 -0.05733333 1.142 0.6006666667
[129,] 0.55666667 -0.25733333 1.842 0.9006666667
[130,] 1.35666667 -0.05733333 2.042 0.4006666667
[131,] 1.55666667 -0.25733333 2.342 0.7006666667
[132,] 2.05666667 0.74266667 2.642 0.8006666667
[133,] 0.55666667 -0.25733333 1.842 1.0006666667
[134,] 0.45666667 -0.25733333 1.342 0.3006666667
[135,] 0.25666667 -0.45733333 1.842 0.2006666667
[136,] 1.85666667 -0.05733333 2.342 1.1006666667
[137,] 0.45666667 0.34266667 1.842 1.2006666667
[138,] 0.55666667 0.04266667 1.742 0.6006666667
[139,] 0.15666667 -0.05733333 1.042 0.6006666667
[140,] 1.05666667 0.04266667 1.642 0.9006666667
[141,] 0.85666667 0.04266667 1.842 1.2006666667
[142,] 1.05666667 0.04266667 1.342 1.1006666667
[143,] -0.04333333 -0.35733333 1.342 0.7006666667
[144,] 0.95666667 0.14266667 2.142 1.1006666667
[145,] 0.85666667 0.24266667 1.942 1.3006666667
[146,] 0.85666667 -0.05733333 1.442 1.1006666667
[147,] 0.45666667 -0.55733333 1.242 0.7006666667
[148,] 0.65666667 -0.05733333 1.442 0.8006666667
[149,] 0.35666667 0.34266667 1.642 1.1006666667
[150,] 0.05666667 -0.05733333 1.342 0.6006666667
attr(,"scaled:center")
Sepal.Length Sepal.Width Petal.Length Petal.Width
5.843333 3.057333 3.758000 1.199333
$K
[,1] [,2]
[1,] -0.1763375 -1.3373258
[2,] 0.0412425 -1.4871770
[3,] -0.4180098 0.3531217
[4,] -0.1748261 0.1537381
$W
[,1] [,2]
[1,] -0.1089140 -0.9940512
[2,] -0.9940512 0.1089140
$A
[,1] [,2] [,3] [,4]
[1,] 0.4011132 0.3374897 0.1066016 0.04313466
[2,] 0.7011108 -0.2112346 1.7544902 0.73394717
$S
[,1] [,2]
[1,] 0.50402567 -1.37277267
[2,] -0.50260862 -1.27721394
[3,] -0.44700677 -1.36913354
[4,] -0.79034697 -1.26100329
[5,] 0.51655190 -1.39603332
[6,] 1.37972905 -1.27076978
[7,] -0.33102437 -1.34824001
[8,] 0.19123487 -1.31004072
[9,] -1.32428040 -1.27173431
[10,] -0.37239594 -1.27116582
[11,] 1.17281670 -1.35907816
[12,] -0.10902971 -1.27056943
[13,] -0.62408796 -1.29923047
[14,] -1.20672774 -1.45024289
[15,] 2.24604672 -1.54431049
[16,] 2.58231972 -1.45416162
[17,] 1.50192662 -1.45236299
[18,] 0.49064742 -1.35371964
[19,] 1.65029626 -1.26063516
[20,] 0.90224949 -1.36921278
[21,] 0.66956645 -1.20739011
[22,] 0.74148741 -1.32986260
[23,] 0.09931911 -1.58948054
[24,] 0.07747509 -1.13882437
[25,] -0.20067790 -1.13437453
[26,] -0.42884981 -1.18345383
[27,] 0.13392896 -1.22653636
[28,] 0.60833387 -1.32441087
[29,] 0.49149945 -1.34951202
[30,] -0.53865495 -1.23293864
[31,] -0.55118118 -1.20967799
[32,] 0.70390873 -1.26008064
[33,] 1.50601505 -1.46524679
[34,] 2.07514279 -1.50299870
[35,] -0.38577419 -1.25211278
[36,] -0.01188459 -1.40564133
[37,] 1.07400544 -1.40631696
[38,] 0.39507256 -1.41804986
[39,] -1.14634719 -1.33742976
[40,] 0.32609246 -1.30707722
[41,] 0.38633922 -1.40208144
[42,] -2.05655460 -1.17333318
[43,] -0.85157955 -1.37802405
[44,] 0.25455627 -1.20872744
[45,] 0.76667366 -1.16856655
[46,] -0.65084446 -1.26112441
[47,] 0.88507835 -1.34286751
[48,] -0.61241375 -1.32669874
[49,] 1.03795911 -1.36204166
[50,] 0.07440044 -1.33514188
[51,] 1.45549942 0.47120568
[52,] 0.69407440 0.38168109
[53,] 1.09878097 0.59838896
[54,] -1.66659485 0.27258632
[55,] 0.20884731 0.51123148
[56,] -0.81270753 0.40401909
[57,] 0.63212358 0.46827007
[58,] -2.07437607 -0.14043906
[59,] 0.51784524 0.45579177
[60,] -1.46446121 0.15616194
[61,] -2.59015254 0.03450964
[62,] -0.18333303 0.27126296
[63,] -1.09955594 0.25054189
[64,] -0.20037038 0.50542559
[65,] -0.52523676 -0.02782627
[66,] 0.99519100 0.34641741
[67,] -0.67955399 0.39856735
[68,] -0.66290142 0.18852744
[69,] -1.04947900 0.57872556
[70,] -1.17966371 0.15145116
[71,] -0.11199651 0.56021757
[72,] -0.12053019 0.18888160
[73,] -0.59466752 0.70239083
[74,] -0.32099769 0.48761667
[75,] 0.33977823 0.31366986
[76,] 0.71294959 0.36375106
[77,] 0.56569956 0.59186556
[78,] 0.62437606 0.69626347
[79,] -0.28750744 0.43071852
[80,] -0.76184647 -0.06652873
[81,] -1.43135573 0.12338650
[82,] -1.38742808 0.05893517
[83,] -0.62855914 0.13583690
[84,] -0.77894970 0.76275565
[85,] -0.94926918 0.39264034
[86,] 0.43603341 0.34828581
[87,] 0.89016457 0.50166535
[88,] -0.70993168 0.47788755
[89,] -0.53059990 0.17886808
[90,] -1.37182721 0.23199202
[91,] -1.33326271 0.37423504
[92,] -0.02243716 0.43973014
[93,] -0.80649235 0.20153235
[94,] -2.08690229 -0.11717841
[95,] -1.00330076 0.28515783
[96,] -0.41291345 0.20817685
[97,] -0.57367553 0.24752704
[98,] 0.07006305 0.30774286
[99,] -1.57900713 -0.27195107
[100,] -0.69050995 0.22242588
[101,] 0.11457717 1.22992528
[102,] -1.08879965 0.81398774
[103,] 0.83534886 1.19291432
[104,] -0.25911276 0.99614944
[105,] 0.04337444 1.14878803
[106,] 1.29579107 1.52551995
[107,] -2.38723276 0.51741463
[108,] 0.87561742 1.34357258
[109,] -0.37031646 1.17998865
[110,] 1.73989757 1.24110367
[111,] 0.57874435 0.75229956
[112,] -0.34075288 0.92256537
[113,] 0.55297366 1.00243061
[114,] -1.50125375 0.82527327
[115,] -1.00830710 0.88895576
[116,] 0.34265321 0.89729176
[117,] 0.18853564 0.93638100
[118,] 2.56579158 1.43055760
[119,] 0.72270869 1.78397301
[120,] -1.47194115 0.79979006
[121,] 0.89474360 1.09370248
[122,] -1.16341048 0.71602002
[123,] 1.11870988 1.59542302
[124,] -0.34003464 0.71895563
[125,] 0.79916874 1.02937226
[126,] 1.27455947 1.14352273
[127,] -0.29695902 0.65029667
[128,] -0.16759836 0.65213717
[129,] -0.31177375 1.07656919
[130,] 1.06764712 1.05521436
[131,] 0.91081172 1.29508967
[132,] 2.95391146 1.26218364
[133,] -0.32515200 1.09562222
[134,] -0.21361484 0.73229598
[135,] -0.91746639 0.97490174
[136,] 1.55663912 1.33959801
[137,] 0.39753682 1.00898189
[138,] 0.20106187 0.91312034
[139,] -0.27190656 0.60377537
[140,] 0.86576447 0.93969866
[141,] 0.49481573 1.08172735
[142,] 0.93065614 0.84160982
[143,] -1.08879965 0.81398774
[144,] 0.69878722 1.18153558
[145,] 0.74565572 1.10558439
[146,] 0.48300774 0.90137827
[147,] -0.67872993 0.82400126
[148,] 0.25342732 0.83829216
[149,] 0.33715627 0.89616875
[150,] -0.49841234 0.73700677
# TODO: Explain different matrices
S <- data.frame(results_iris_ica$S)
S['class'] <- y
ggplot(S, aes(x = X1, y = X2, color = class)) +
geom_point()
